package com.insight.datasource.adapter;

import com.insight.common.enums.DatabaseType;
import org.springframework.stereotype.Component;

/**
 * 元数据提取器工厂
 * 根据数据库类型创建对应的MetadataExtractor实现
 */
@Component
public class MetadataExtractorFactory {

    /**
     * 根据数据库类型创建对应的元数据提取器
     *
     * @param dbType 数据库类型
     * @return 元数据提取器实例
     * @throws IllegalArgumentException 如果数据库类型不支持
     */
    public MetadataExtractor createExtractor(DatabaseType dbType) {
        return switch (dbType) {
            case MYSQL, TIDB -> new MySQLMetadataExtractor();
            case ORACLE -> new OracleMetadataExtractor();
            case POSTGRESQL -> new PostgreSQLMetadataExtractor();
            default -> throw new IllegalArgumentException("不支持的数据库类型: " + dbType);
        };
    }
}
